home *** CD-ROM | disk | FTP | other *** search
- GIFMachine -- GIF to SHAM conversion program by Christopher Wichura (2.0 only)
- GIFM13 -- Modified to run under DOS 1.3, with arp.library.
-
- I wanted to use Christopher Wichura's GIFMachine, but I do not have access
- to DOS 2.0. So, I hacked up his source code...
-
- Wichura has given me permission to distribute these changes in the form of
- Lattice DIFF files. To construct a full set of my modifed source code,
- you will need Wichura's original files (GIFMAC.LZH on Compu$erve).
-
- Robert L. Pyron, 01July91
- BIX: rpyron
-
- -----------------------------------------------------------------------------
- This archive includes:
-
- GIFMachine.docs Wichura's doc file
- GIFMachine original version, runs under 2.0
- GIFM13 modified version, runs under 1.3 with arp.library
- GIFM13.diff Lattice DIFF files, concatenated (see below)
- README.RLP this file
- UnDiff my undiff program
- UnDIff.c source for undiff
-
- rlpsrc/ my subdirectory for modified source files
-
- ARPsvR.lib S. Vigna's ARPsv.lib, compiled with register args
- iffw.c Electronic Arts source (public domain)
-
- rlpsrc/iff/ Electronic Arts source (public domain)
-
- compiler.h, gio.h, iff.h, ilbm.h
-
- -----------------------------------------------------------------------------
- NOT INCLUDED in this archive:
-
- Sources/ Wichura's original source code
-
- 24to12.c, doflip.c, doimage.c, extensions.c, GIFMachine.h,
- giftosham.c, lmkfile, main.c, mymem.c, myprintf.c, rgbdiff.c,
- startup.a, stripborder.c, version.o, warncli.c, writeiff.c, xcomp.c
-
-
- -----------------------------------------------------------------------------
- How to create a copy of my modified source code:
-
- 1. Create subdirectory "sources".
- 2. Copy Wichura's original files into both "sources" and "rlpsrc".
- 3. Run the undiff program:
- UnDiff < GIFM13.diff
-
- -----------------------------------------------------------------------------
- All my changes (except in "lmkfile") are marked with "#ifdef RLP". The most
- extensive changes were in main.c and GIFMachine.h, along with a large
- addition to writeiff.c, and some minor changes to other files.
-
- 1. I use the ARP library.
-
- I am using Sebastiano Vigna's startup code. This needs to be
- reworked some for more compatibility of argument handling and
- of workbench support.
-
- Full source for S. Vigna's startup code can be found in an archive
- known (on BIX, at least) as LATARPSV11.LZH. I am including only
- the file ARPsvR.lib, which is Vigna's code compiled with register
- arguments.
-
- 2. I don't have IFFPARSE (is this part of 2.0?), so I put together
- a minimal set to cover the functions that are used in Wichura's
- code. They call functions in Electronic Arts' IFFW.C. My functions
- are only a hack, and should not be used as the basis of any
- implementation of IFFPARSE.
-
- I am including all the relevant IFF source in the subdirectory
- "iff". This is public domain from Electronic Arts.
-
- 3. The GetValue() and PutValue() macros did not work correctly, at
- least using Lattice 5.05. These macros referenced pointers to
- RGB structures, and cast them into pointers to WORD. The problem
- was that the RGB structure is three bytes long, and an array of
- them is packed... I added a pad field for alignment.
-
- If one wanted to be clever, either addr or addr+1 is on a word
- boundary, and fits entirely within the RGB structure. This could
- be handled easily with a macro.
- Drawbacks:
- -- Too "clever"; a potential maintenance problem.
- -- Might make the program noticeable slower.
- -- It's bound to drive somebody up the wall.
- Advantages:
- -- Could save a considerable amount of memory on large pics.
- -- It's bound to drive somebody up the wall.
-
- 4. rgbdiff.c used floating-point math to scale some byte values.
- Since this only happens at program initialization, and this is
- the only spot that uses FP, I changed the code to use integer
- multiplication and bit shifts. The amount of time saved is
- minuscule, but this means we have one less library to worry about.
-
- 5. I am using the object file "version.o" that Wichura supplied with
- his code. I could write a program to update this at every compile,
- but for now you are stuck with the same version number.
-
- 6. What the heck is a "boustrophedonic Floyd-Steinberg error diffusion
- algorithm"? And how is it pronounced?
-